package com.scpii.api.persistence.push;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.scpii.api.domain.push.UserMessages;

public interface UserMessagesMapper {
	
	/**
	 * 根据对象来删除数据
	 * @param record
	 * @return
	 */
	int deleteByObject(UserMessages record);
	
	/**
	 * 根据用户ID来查询用户的所有推送消息
	 * @param userId
	 * @return
	 */
	List<UserMessages> selectUserMessageByUserId(UserMessages userMessages);
	
	/**
	 * 更新用户消息状态为已经拉取
	 * @param id
	 * @return
	 */
	int updateMessageStatusToHAS_PULL(List<Long> list);
	
	Long generateId();
	
	int insert(UserMessages record);
	
	/**
	 * 更新用户消息表的状态
	 * @param userMessageId	主键
	 * @param messageStatus	修改后的状态
	 * @return
	 */
	int updateUserMessageStatus(@Param("userMessageId")Long userMessageId, @Param("messageStatus") Integer messageStatus);
	
	/**
	 * 查询每个设备对应的未读记录数
	 * @param appId	应用ID
	 * @param list	存储IOS_TOKEN
	 * @return
	 */
	List<Map<String,Object>> selectNotReadCount(@Param("appId")Long appId,@Param("list")List<String> list);
	
	/**
	 * 根据用户ID来获取，未读记录数
	 * @param userId
	 * @return
	 */
	int selectNotReadCountByUserId(@Param("userId")Long userId);
	
	int updateUserMessageStatusByIosToken(@Param("appId")Long appId,@Param("list")List<String> list,@Param("messageId") Long messageId);
	
	

	
	//=====================================
    int deleteByPrimaryKey(Long id);

   

    int insertSelective(UserMessages record);

    UserMessages selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(UserMessages record);

    int updateByPrimaryKey(UserMessages record);
}